package com.shlh.saas.mapper.twitter;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.shlh.saas.entity.twitter.TwitterUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Twitter用户数据访问接口
 */
@Mapper
public interface TwitterMapper extends BaseMapper<TwitterUser> {
    
    /**
     * 根据关键词搜索Twitter用户
     * 
     * @param keyword 关键词
     * @return 搜索结果列表
     */
    List<TwitterUser> searchByKeyword(@Param("keyword") String keyword);
    
    /**
     * 获取所有TwitterUser数据
     * 
     * @return 所有TwitterUser数据
     */
    List<TwitterUser> selectAllTwitterUsers();

    /**
     * 分页查询Twitter用户列表
     */
    List<TwitterUser> getTwitterUserList(Page<TwitterUser> page, @Param("name") String name,
                                       @Param("location") String location, @Param("gender") String gender,
                                       @Param("email") String email, @Param("phone") String phone);
    
    /**
     * 导出Twitter用户数据
     */
    List<TwitterUser> exportTwitterUsers(@Param("ids") List<Integer> ids, @Param("name") String name,
                                       @Param("location") String location, @Param("gender") String gender,
                                       @Param("email") String email, @Param("phone") String phone);
    
    /**
     * 在所有字段中搜索关键词（带分页）
     */
    List<TwitterUser> searchInAllFieldsWithPagination(
        @Param("keyword") String keyword, 
        @Param("offset") int offset, 
        @Param("limit") int limit
    );
    
    /**
     * 统计在所有字段中包含关键词的记录总数
     */
    long countInAllFields(@Param("keyword") String keyword);
    
    /**
     * 查询所有数据（带分页）
     */
    List<TwitterUser> selectAllWithPagination(
        @Param("offset") int offset, 
        @Param("limit") int limit
    );
    
    /**
     * 统计总记录数
     */
    long countAll();
    
    /**
     * 查找相似的用户名
     */
    List<String> findSimilarUsernames(@Param("keyword") String keyword);
    
    /**
     * 查找相似的显示名称
     */
    List<String> findSimilarDisplayNames(@Param("keyword") String keyword);
    
    /**
     * 查找相似的个人简介
     */
    List<String> findSimilarBios(@Param("keyword") String keyword);
} 